package org.infodavid.common.persistence;

import java.io.Serializable;
import java.util.Map;

/**
 * The Interface IConnectionConfiguration.
 */
public interface IConnectionConfiguration extends Serializable {
	/** The NAME property. */
	String NAME_PROPERTY = "name";

	/** The HOST property. */
	String HOST_PROPERTY = "host";

	/** The JDBC driver property. */
	String JDBC_DRIVER_PROPERTY = "driver";

	/** The USER property. */
	String USER_PROPERTY = "user";

	/** The PASSWORD property. */
	String PASSWORD_PROPERTY = "password";

	/** The SCHEMA property. */
	String SCHEMA_PROPERTY = "schema";

	/** The JNDI property. */
	String JNDI_PROPERTY = "jndiName";

	/** The CONNECTION_STRING property. */
	String CONNECTION_STRING_PROPERTY = "connectionString";

	/** The CONNECTION_CONFIGURATION property. */
	String CONNECTION_CONFIGURATION = "connectionConfiguration";

	/** The PROPERTIES property. */
	String PROPERTIES = "properties";

	/** The TYPE property. */
	String TYPE = "type";

	/**
	 * Gets the name.
	 * @return the name
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	String getName();

	/**
	 * Gets the type of the database.
	 * @return the type
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	String getType();

	/**
	 * Gets the TCP port.
	 * @return the port
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	Integer getTcpPort();

	/**
	 * Gets the JNDI name.
	 * @return the JNDI name
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	String getJndiName();

	/**
	 * Gets the host.
	 * @return the host
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	String getHost();

	/**
	 * Gets the JDBC driver.
	 * @return the driver
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	String getJdbcDriver();

	/**
	 * Gets the schema.
	 * @return the schema
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	String getSchema();

	/**
	 * Gets the Standard JDBC connection string used by the driver.
	 * @return the connection string
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	String getStdConnectionString();

	/**
	 * Gets the user.
	 * @return the user
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	String getUser();

	/**
	 * Gets the password.
	 * @return the password
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	String getPassword();

	/**
	 * Sets the host.
	 * @param value the host
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	void setHost(String value);

	/**
	 * Sets the name.
	 * @param value the name
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	void setName(String value);

	/**
	 * Sets the type.
	 * @param value the type
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	void setType(String value);

	/**
	 * Sets the TCP port.
	 * @param value the port
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	void setTcpPort(Integer value);

	/**
	 * Sets the JNDI name.
	 * @param value the JNDI name
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	void setJndiName(String value);

	/**
	 * Sets the JDBC driver.
	 * @param value the driver
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	void setJdbcDriver(String value);

	/**
	 * Sets the Standard JDBC connection string used by the driver.
	 * @param value the value
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	void setStdConnectionString(String value);

	/**
	 * Gets the schema.
	 * @param value the value
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	void setSchema(String value);

	/**
	 * Gets the user.
	 * @param value the value
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	void setUser(String value);

	/**
	 * Sets the password.
	 * @param value the value
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	void setPassword(String value);

	/**
	 * Gets the properties.
	 * @return the parameters
	 * @ejb.persistence
	 * @ejb.interface-method view-type = "remote"
	 */
	Map<String,String> getProperties();

	/**
	 * Gets the property.
	 * @param key the key
	 * @return the property
	 */
	String getProperty(String key);

	/**
	 * Sets the property.
	 * @param key the key
	 * @param value the value
	 */
	void setProperty(String key, String value);
}
